<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * //Controlador de ABM de Usuarios
 *  
 */
class ABM_Usuarios extends CI_Controller {
    function __construct() {
        parent::__construct();
        
        
        //Si el usuario no está logueado redirijo al modulo de login.
        if(!$this->autenticacion->logueado()){
            redirect('admin/usuarios');
        }
        
        //ZONA DE CARGA DE HELPERS Y MODELOS
        $this->load->helper('form');
        $this->load->helper('html');
        $this->load->model('Usuarios_Model');
        $this->load->library('grocery_CRUD');
        
        //ZONA DE INICIALIZACIÓN DE VARIABLES
        $this->encabezado['usuario']=  $this->session->userdata('usuario');
        $this->menu['menu']='otros';
        $this->menu['submenu']='usuarios';
    }
    
        function index(){
        $this->abm();
    }
    
    function abm(){
        //Creo el objeto crud
        $crud = new grocery_CRUD();

        //Defino Template como datatables.
        //$crud->set_theme('datatables');

        //Defino tabla sobre la que trabajo y tipo de 'Objeto'
        $crud->set_table('Usuarios');
        $crud->set_subject('Usuario');
        
        //Quito el botones borrar.
        //$crud->unset_delete();     
        
        //Seteo Reglas para campos
        $crud->set_rules('contrasena', 'Contrase&ntilde;a', 'required|matches[repetirContrasena]');
        
        $crud->add_fields('nombreUsuario', 'contrasena', 'repetirContrasena');
        $crud->edit_fields('contrasena', 'repetirContrasena');	
        
        $crud->field_type('contrasena', 'password');
        $crud->field_type('repetirContrasena', 'password');
        
        //Seteo campos requeridos
        $crud->required_fields('nombreUsuario', 'contrasena', 'repetirContrasena');
        
        //Defino Columnas a Mostrar
        $crud->columns('nombreUsuario');
        
        //Defino nombres para cada campo.
        $crud->display_as('nombreUsuario', 'Nombre de Usuario');
        $crud->display_as('contrasena', 'Contrase&ntilde;a');
        $crud->display_as('repetirContrasena', 'Repetir Contrase&ntilde;a');
        
        //Hago 'callbacks' para transformar datos antes de inserción/actualización.
        $crud->callback_before_insert(array($this, '_transformar_datos'));
        $crud->callback_before_update(array($this, '_transformar_datos_update'));
        $crud->callback_after_insert(array($this, '_callback_insercion'));
        $crud->callback_after_update(array($this, '_callback_edicion'));
        //Genero el ABM
        $output=$crud->render();

        //Llamo a la función encargada de mostrar el ABM.
        $this->mostrar_crud($output);
    }
    
    private function mostrar_crud($output = null, $vista='abm_view', $data = NULL) {   
        
        $this->encabezado['abm']=TRUE;
        $this->encabezado['js_files']=$output->js_files;
        $this->encabezado['css_files']=$output->css_files;
        
        $this->load->view('admin/template/encabezado', $this->encabezado);
        $this->load->view('admin/template/menu', $this->menu);
        $this->load->view("admin/abm_usuarios/$vista", $data);
	$this->load->view('admin/crud/crud_view',$output);	
        $this->load->view('admin/template/footer');
    }
    
    function _transformar_datos(){
        $post_array=$this->input->post();
        
        $post_array['contrasena']=  md5($post_array['contrasena']);

        unset($post_array['repetirContrasena']);
        
        return $post_array;
    }
    
    function _transformar_datos_update(){
        $post_array=$this->_transformar_datos();
        
        unset($post_array['nombreUsuario']);
        
        return $post_array;
    }
    
    function _callback_insercion($post_array, $primary_key){
        //Inserto el registro
        $registro="Insertó usuario id: $primary_key";
        $this->registro_actividad->cargar_registro($this->session->userdata('id'), $registro);
    }
    
    function _callback_edicion($post_array, $primary_key){
        //Inserto el registro
        $registro="Editó usuario id: $primary_key";
        $this->registro_actividad->cargar_registro($this->session->userdata('id'), $registro);
    }
}
/* End of file abm_usuarios.php */
/* Location: ./application/controllers/abm_usuarios.php */